The present invention relates to computer programming language environments, and in particular, it concerns a system to facilitate the writing and debugging of assembly language programs.
Assembly language programming is a particularly difficult task for both the code writing and debugging phases of the programming process. High-level languages, such as C++, can be used to write programs which describe algorithms in terms of abstract symbols which are relatively close to human languages. Assembly languages, on the other hand, are mechanical in nature, and describe algorithms only in terms of simple microprocessor instructions. Therefore, assembly language programs are usually longer and more difficult to understand than programs written in high-level languages.
The debugging process is especially difficult for assembly language programming. Debugging is a process which involves testing a computer program for errors (bugs) which cause the program to give results not in accordance with its design specifications. Errors can result from flaws in the underlying algorithm used as the basis of a program, or from the incorrect execution of the algorithm. On seeing such erroneous results, software engineers find the sections of the computer program which contain the errors and rewrite them. The engineers then recompile the program and test it again. This debugging process is repeated until the errors are removed from the program.
The debugging process is relatively difficult for assembly language programs because the underlying algorithm is obscured by the large number of mechanical, microprocessor-specific instructions, whereas in high-level languages the underlying algorithm is easy to identify. Also, current assembly language programming environments do not provide many of the features commonly found in high-level programming environments. As an example, high-level languages and programming environments have numerous features that facilitate the handling of files stored on hard disks. These files can be used to store the results of test output produced by programs as they are being debugged.
Another problem with the debugging process for assembly language programs is that each assembly language has its own set of debugging programs, requiring software engineers to learn how to use a new set of debugging programs each time a new microprocessor is developed.
The most accurate tool to examine the execution of assembly language programs, an emulator, is a special hardware device that attaches directly to the microprocessor in which the assembly language is used, in order to continuously monitor the state of the inputs and outputs of the microprocessor. These devices are expensive, and are not always available in the early stages of microprocessor development, causing delays in software development.
European Patent Application 90114711 describes a specialized development computer which is used to translate control programs written in high-level languages to machine language, and transfer the machine language control programs to a development microprocessor. Although this does facilitate the development process somewhat, it does not provide for the writing, testing, and debugging of programs which include both high-level language and assembly language instructions in a single program. In addition, this development method requires specialized hardware and an extra development computer for the interface.
A more efficient system would require less specialized electronic hardware. Such a system would be implemented for use on general purpose personal computers, allowing companies to apply and take advantage of the existing personal computer skills of their staff for the tasks of writing and debugging assembly language programs. A more efficient system would also make all the tools in the competitive high-level programming language market available for use in assembly language programming.
There is therefore a need for a system that brings the ease of writing and debugging high-level language programs to assembly language programs.